#!/bin/bash
# Zpracovani servisniho pozadavku, vyzadujiciho reset Pythonu.
# (c) Pavel Dufek, TPC, 2008.
# ---------------------------
# Kontrola/priprava prostredi
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
unalias ls
unalias cp
unalias rm
uid=`id|cut -f1 -d\(|cut -f2 -d\=|tr -cd [0-9]`
if [ $uid -ne 0 ]
then
  echo "servis.sh: MUSIS BYT JAKO ROOT (nebo SU/SUDO) !"
  exit 1
fi
cd /
# pomocne promenne/usnadneni pristupu
ARD=/automat/RAMdisk
# Kontrola, jestli je pozadavek na akci
if [ ! -s $ARD/chciProvest ]; then
  exit 1
fi
# nacteni akce - predpoklada 1 povel - vsechny krome "vzdalenyRestartNouzovy"
# U CROCO nepouzivame-  pozaduji zastaveni automatu
oper=`cat $ARD/chciProvest|tr -cd [a-zA-Z]`
#touch $ARD/pozadavekNaZastaveni
#sleep 10
#if [ ! -f $ARD/muzesZabit ] && [ "$oper" != "vzdalenyRestartNouzovy" ]; then
#  exit 1
#fi
# jdeme na operaci - zapsat do logu
dtime=`date +"%d.%m.%Y %H:%M:%S"`
echo "$dtime INFO: $oper" >>/automat/log/servis.log
# zde nasleduje jednoduche vetveni dle operaci, kazda operace ma svoji sekci,
#   pred startem automatu maze chciProvest soubor. Kod je sice castecne
#   opakovany, ale aspon je to podle mne prehledne. Pavel D.
#   Souborove jsme v / !
# Operace: updatujAutomatLokalniRestart - update /automat sw, restart s technikem
if [ "$oper" = "updatujAutomatLokalniRestart" ]; then
  killall python
  sleep 10
  killall python
  cp -avf automat2/* automat
  cd /automat
  find . -type f -exec chmod 666 {} \;
  find . -name \*.pyc -exec rm -f {} \;
  cd /
  rm -rf /automat2/*
  rm -f $ARD/chciProvest 
  sh /automat/au_start.sh
fi
# Operace: updatujAutomatVzdalenyRestart - update /automat sw, restart VPN typu
if [ "$oper" = "updatujAutomatVzdalenyRestart" ]; then
  killall python
  sleep 10
  killall python
  cp -avf automat2/* automat
  cd /automat
  find . -type f -exec chmod 666 {} \;
  find . -name \*.pyc -exec rm -f {} \;
  cd /
  rm -rf /automat2/*
  rm -f $ARD/chciProvest 
  sh /automat/au_vpn_start.sh
fi
# Operace: updatujAutomatVcetneDbLokalniRestart - promazani db, update /automat
#          sw, restart s technikem
if [ "$oper" = "updatujAutomatVcetneDbLokalniRestart" ]; then
  killall python
  sleep 10
  killall python
  rm -f /automat/db/*
  cp -avf automat2/* automat
  cd /automat
  find . -type f -exec chmod 666 {} \;
  find . -name \*.pyc -exec rm -f {} \;
  cd /
  rm -rf /automat2/*
  rm -f $ARD/chciProvest 
  sh /automat/au_start.sh
fi
# Operace: updatujAutomatVcetneDbVzdalenyRestart - promazani db, update /automat
#          sw, restart VPN typu
if [ "$oper" = "updatujAutomatVcetneDbVzdalenyRestart" ]; then
  killall python
  sleep 10
  killall python
  rm -f /automat/db/*
  cp -avf automat2/* automat
  cd /automat
  find . -type f -exec chmod 666 {} \;
  find . -name \*.pyc -exec rm -f {} \;
  cd /
  rm -rf /automat2/*
  rm -f $ARD/chciProvest 
  sh /automat/au_vpn_start.sh
fi
# Operace: lokalniRestart - restart s technikem
if [ "$oper" = "lokalniRestart" ]; then
  killall python
  sleep 10
  killall python
  rm -f $ARD/chciProvest 
  sh /automat/au_start.sh
fi
# Operace: vzdalenyRestart - restart VPN typu
# Operace: vzdalenyRestartNouzovy - to same, akorat jsme vyse zaridili, ze se
#          neceka na bezpecne odstaveni automatu !
if [ "$oper" = "vzdalenyRestart" ] || [ "$oper" = "vzdalenyRestartNouzovy" ]; then
  killall python
  sleep 10
  killall python
  rm -f $ARD/chciProvest 
  sh /automat/au_vpn_start.sh
fi
# Operace: virginizaceAutomatu - promazani logu, db, eeprom, restart OS
#if [ "$oper" = "virginizaceAutomatu" ]; then
#  killall python
#  sleep 10
#  killall python
#  rm -f $ARD/chciProvest
#  cd /automat
#  rm -f /automat/log/*
#  # at mame 100 % jistotu
#  /etc/init.d/firebird stop
#  killall fbguard
#  sleep 2
#  killall fbserver
#  sleep 2
#  killall -9 fbguard
#  sleep 2
#  killall -9 fbserver
#  sleep 2
#  rm -f /automat/db/*
#  python eeprom_init.py init
#  reboot
#fi

# Operace: vzorOperace - sem si dopis, co chces, pripadne si podobnych vytvor,
#          kolik chces. Nazev operace je pouze v tomto komentari a podmince
#          dale ... Kazda z techto operaci se provede pouze po korektnim
#          odstaveni automatu ...
if [ "$oper" = "vzorOperace" ]; then
  # nejaka priprava akce - zde zabiti pythonu (zaremovane)
#  killall python
  sleep 10
#  killall python
  # zde by byla vlastni akce - kopirovani, volani python /cesta/nekam/cosi.py ...
  # pro jistotu - smazani prikazu k operaci - pred prip. nahozenim automatu
  rm -f $ARD/chciProvest
#  sh /automat/au_start.sh
fi
# spolecne nakonec - zavolani potvrzovace - v zasade lib. akce typu sms apod.
#ZATIM_PRY_NE-PETR-python /automat/po_servisu.py $oper
# konec
